from scitk.app.sciapp import SciApp, run_app
import numpy as np


def init_app(app: SciApp):
    '''
    定义需要用到的控件以及相应的变量。
    '''
    app.add_view('tk_graph', 'plot_frame')
    app.add_control('controlbutton','button', button_callback, 'Click me')
    app.add_control('switchbutton','switch', button_callback, ('on','off'))
    app.add_param('value_slider', 'slide', ((1, 150), 0, 'weight', 'kg'), initial_value=50, callback=func)
    app.add_param('value_input', float, ((0.3, 2.5), 2, 'aa', ''), initial_value=1.72)
    app.get_view_widget('plot_frame').create_figure() # 在plot_frame上创建一个新的绘图标签页，返回结果为subplot.

    app.selected = False # 可以自定义参数。


def button_callback(app: SciApp):
    print(app)
    if app.selected == False:
        print(123)
        app.selected = True
    else:
        print(456)
        app.selected = False

def func(app: SciApp):
    '''回调函数的输入参数为app,也就是SciApp;没有返回值。'''
    val = app.get_param_widget('value_slider').get_value()
    print(val, type(val))
    v = app.get_view_widget('plot_frame')

    fig = v.get_figure(0)  # 获取第1个选项卡中的figure。对象为Graph，有方法plot.
    fig.draw_axes()
    fig.plot(np.linspace(0, 1, 100), val * np.random.randn(100))



if __name__ == '__main__':
    run_app(init_app)
